/**   
 * @Title: ArrayUtil.java 
 * @Package com.guangcai.helper 
 * @Description: 
 * @author Viany  
 * @date 2013-8-4 上午3:04:42 
 * @version V1.0   
 */
package org.common;

import java.util.HashSet;

/**
 * @ClassName: ArrayUtil
 * @Description:判断数组时候重复,不重复为true,重复为false;判断某一个元素存在某个一个访问之内可以用比较的办法；判断某一个数据时候存在某一个数组中，可以先连接两个数组，在去掉判断数组中是否有重复的值
 * @author Viany
 * @date 2013-8-4 上午3:04:42
 */
public class ArrayUtil {

	/**
	 * @author Viany
	 * @date 2013-8-4 上午3:15:14
	 * @Description: 判断数组时候重复,不重复为true,重复为false
	 * @param @param
	 * @param @return
	 * @param @throws Exception
	 * @throws
	 */
	public static boolean arrayIsRepeat(String[] s) throws Exception {
		if (s == null || s.length<=0)
			throw new Exception("arrayIsRepeat Array is null");

		HashSet<String> set = getRepeat(s, null);
		/* false is not repeat ;true is repeat */
		return s.length == set.size() ? true : false;
	}

	/**
	 * @author Viany
	 * @date 2013-8-4 上午4:25:13
	 * @Description: s1包含于s2中；包含于为ture，不包含于为false
	 * @param @param s1
	 * @param @param s2
	 * @param @return
	 * @param @throws Exception
	 * @throws
	 */
	public static boolean mergeArrays(String[] s1, String[] s2)
			throws Exception {
		if (s1 == null || s2 == null)
			throw new Exception("mergeArrays s1 or s2 Array is null");

		HashSet<String> set = new HashSet<String>();
		getRepeatArgus(set, s1, s2);
		return set.size() == s2.length ? true : false;
	}

	/**
	 * @author Viany
	 * @date 2013-8-4 上午5:38:05
	 * @Description: 过滤重复的数组
	 * @param @param 
	 * @param @param set
	 * @param @return
	 * @param @throws Exception
	 * @throws
	 */
	public static HashSet<String> getRepeat(String[] s, HashSet<String> set)
			throws Exception {
		set = set == null ? new HashSet<String>() : set;
		for (String str : s) {
			if (str == null || "".equals(str))
				throw new Exception("String Array  value is null");
			set.add(str);
		}
		return set;
	}

	/**
	 * @author Viany
	 * @date 2013-8-4 上午5:38:05
	 * @Description: 过滤重复的数组
	 * @param @param s
	 * @param @param set
	 * @param @return
	 * @param @throws Exception
	 * @throws
	 */
	public static HashSet<String> getRepeatArgus(HashSet<String> set,
			String[]... ss) throws Exception {
		set = set == null ? new HashSet<String>() : set;
		for (String[] s : ss) {
			for (String str : s) {
				if (str == null || "".equals(str))
					throw new Exception("String Array  value is null");
				set.add(str);
			}

		}

		return set;
	}


}
